﻿#pragma warning disable IDE1006
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace WUDI.ECharts.Parallel.ParallelAxisDefault
{
	/// <summary>
	/// 配置多个 parallelAxis
	/// <para>
	/// #parallelAxis，形成最终的坐标轴的配置
	/// </para>
	/// <para>
	/// 参见示例
	/// </para>
	/// <para>
	/// <see href="https://echarts.apache.org/examples/zh/editor.html?c=doc-example/parallel-all&amp;edit=1&amp;reset=1"/>
	/// </para>
	/// </summary>
	public class ParallelAxisDefault
	{

		/// <summary>
		/// 坐标轴类型
		/// <para>
		/// value
		/// </para>
		/// <para>
		/// 数值轴，适用于连续数据
		/// </para>
		/// <para>
		/// category
		/// </para>
		/// <para>
		/// 类目轴，适用于离散的类目数据
		/// </para>
		/// <para>
		/// 为该类型时类目数据可自动从 parallelAxis.data
		/// </para>
		/// <para>
		/// #parallelAxis.data 设置类目数据
		/// </para>
		/// <para>
		/// time
		/// </para>
		/// <para>
		/// 时间轴，适用于连续的时序数据，与数值轴相比时间轴带有时间的格式化，在刻度计算上也有所不同，例如会根据跨度的范围来决定使用月，星期，日还是小时范围的刻度
		/// </para>
		/// <para>
		/// log
		/// </para>
		/// <para>
		/// 对数轴
		/// </para>
		/// <para>
		/// 适用于对数数据
		/// </para>
		/// </summary>
		public dynamic type { get; set; }  = "value";

		/// <summary>
		/// 坐标轴名称。
		/// </summary>
		public dynamic name { get; set; } 

		/// <summary>
		/// 坐标轴名称显示位置。
		/// start
		/// middle 或者 center
		/// end
		/// </summary>
		public WUDI.ECharts.NameLocation nameLocation { get; set; }  = WUDI.ECharts.NameLocation.end;

		/// <summary>
		/// 坐标轴名称的文字样式。
		/// </summary>
		public WUDI.ECharts.Parallel.ParallelAxisDefault.NameTextStyle nameTextStyle { get; set; } 

		/// <summary>
		/// 坐标轴名称与轴线之间的距离。
		/// </summary>
		public dynamic nameGap { get; set; }  = 15;

		/// <summary>
		/// 坐标轴名字旋转，角度值。
		/// </summary>
		public dynamic nameRotate { get; set; } 

		/// <summary>
		/// 是否是反向坐标轴。
		/// </summary>
		public dynamic inverse { get; set; }  = false;

		/// <summary>
		/// 坐标轴两边留白策略，类目轴和非类目轴的设置和表现不一样
		/// <para>
		/// 类目轴中 boundaryGap 可以配置为 true 和 false
		/// </para>
		/// <para>
		/// 默认为 true，这时候刻度
		/// </para>
		/// <para>
		/// #parallelAxis.axisTick之间的带(band)中间
		/// </para>
		/// <para>
		/// 非类目轴，包括时间，数值，对数轴，boundaryGap是一个两个值的数组，分别表示数据最小值和最大值的延伸范围，可以直接设置数值或者相对的百分比，在设置 max
		/// </para>
		/// <para>
		/// #parallelAxis.max 后无效
		/// </para>
		/// <para>boolean/Array</para>
		/// </summary>
		public dynamic boundaryGap { get; set; } 

		/// <summary>
		/// 坐标轴刻度最小值
		/// <para>
		/// 可以设置成特殊值 dataMin，此时取数据在该轴上的最小值作为最小刻度
		/// </para>
		/// <para>
		/// 不设置时会自动计算最小值保证坐标轴刻度的均匀分布
		/// </para>
		/// <para>
		/// 在类目轴中，也可以设置为类目的序数（如类目轴 data: [类A, 类B, 类C] 中，序数 2 表示 类C
		/// </para>
		/// <para>
		/// 也可以设置为负数，如 -3）
		/// </para>
		/// <para>
		/// 其中 value 是一个包含 min 和 max 的对象，分别表示数据的最大最小值，这个函数可返回坐标轴的最小值，也可返回 null/undefined 来表示“自动计算最小值”（返回 null/undefined 从 v4.8.0 开始支持）
		/// </para>
		/// <para>number/string/Function</para>
		/// </summary>
		public dynamic min { get; set; } 

		/// <summary>
		/// 坐标轴刻度最大值
		/// <para>
		/// 可以设置成特殊值 dataMax，此时取数据在该轴上的最大值作为最大刻度
		/// </para>
		/// <para>
		/// 不设置时会自动计算最大值保证坐标轴刻度的均匀分布
		/// </para>
		/// <para>
		/// 在类目轴中，也可以设置为类目的序数（如类目轴 data: [类A, 类B, 类C] 中，序数 2 表示 类C
		/// </para>
		/// <para>
		/// 也可以设置为负数，如 -3）
		/// </para>
		/// <para>
		/// 其中 value 是一个包含 min 和 max 的对象，分别表示数据的最大最小值，这个函数可返回坐标轴的最大值，也可返回 null/undefined 来表示“自动计算最大值”（返回 null/undefined 从 v4.8.0 开始支持）
		/// </para>
		/// <para>number/string/Function</para>
		/// </summary>
		public dynamic max { get; set; } 

		/// <summary>
		/// 只在数值轴中（type
		/// <para>
		/// #parallelAxis.type: value）有效
		/// </para>
		/// <para>
		/// 是否是脱离 0 值比例
		/// </para>
		/// <para>
		/// 设置成 true 后坐标刻度不会强制包含零刻度
		/// </para>
		/// <para>
		/// 在双数值轴的散点图中比较有用
		/// </para>
		/// <para>
		/// 在设置 max
		/// </para>
		/// <para>
		/// #parallelAxis.max 之后该配置项无效
		/// </para>
		/// </summary>
		public dynamic scale { get; set; }  = false;

		/// <summary>
		/// 坐标轴的分割段数，需要注意的是这个分割段数只是个预估值，最后实际显示的段数会在这个基础上根据分割后坐标轴刻度显示的易读程度作调整
		/// <para>
		/// 在类目轴中无效
		/// </para>
		/// </summary>
		public dynamic splitNumber { get; set; }  = 5;

		/// <summary>
		/// 自动计算的坐标轴最小间隔大小
		/// <para>
		/// 只在数值轴或时间轴中（type
		/// </para>
		/// <para>
		/// #parallelAxis.type: value 或 time）有效
		/// </para>
		/// </summary>
		public dynamic minInterval { get; set; }  = 0;

		/// <summary>
		/// 自动计算的坐标轴最大间隔大小
		/// <para>
		/// 只在数值轴或时间轴中（type
		/// </para>
		/// <para>
		/// #parallelAxis.type: value 或 time）有效
		/// </para>
		/// </summary>
		public dynamic maxInterval { get; set; } 

		/// <summary>
		/// 强制设置坐标轴分割间隔
		/// <para>
		/// 因为 max
		/// </para>
		/// <para>
		/// #parallelAxis.max 强制设定刻度划分，一般不建议使用
		/// </para>
		/// <para>
		/// 无法在类目轴中使用
		/// </para>
		/// <para>
		/// 在时间轴（type
		/// </para>
		/// <para>
		/// #parallelAxis.type: log）中需要传指数值
		/// </para>
		/// </summary>
		public dynamic interval { get; set; } 

		/// <summary>
		/// 对数轴的底数，只在对数轴中（type。#parallelAxis.type: log）有效。
		/// </summary>
		public dynamic logBase { get; set; }  = 10;

		/// <summary>
		/// 坐标轴是否是静态无法交互。
		/// </summary>
		public dynamic silent { get; set; }  = false;

		/// <summary>
		/// 坐标轴的标签是否响应和触发鼠标事件，默认不响应。
		/// </summary>
		public dynamic triggerEvent { get; set; }  = false;

		/// <summary>
		/// 坐标轴轴线相关设置。
		/// </summary>
		public WUDI.ECharts.Parallel.ParallelAxisDefault.AxisLine.AxisLine axisLine { get; set; } 

		/// <summary>
		/// 坐标轴刻度相关设置。
		/// </summary>
		public WUDI.ECharts.Parallel.ParallelAxisDefault.AxisTick.AxisTick axisTick { get; set; } 

		/// <summary>
		/// 从 v4.6.0 开始支持
		/// <para>
		/// 坐标轴次刻度线相关设置
		/// </para>
		/// <para>
		/// 注意
		/// </para>
		/// <para>
		/// 次刻度线无法在类目轴（type
		/// </para>
		/// <para>
		/// #parallelAxis.type: category）中使用
		/// </para>
		/// <para>
		/// 1) 函数绘图中使用次刻度线
		/// </para>
		/// <para>
		/// 2) 在对数轴中使用次刻度线
		/// </para>
		/// </summary>
		public WUDI.ECharts.Parallel.ParallelAxisDefault.MinorTick.MinorTick minorTick { get; set; } 

		/// <summary>
		/// 坐标轴刻度标签的相关设置。
		/// </summary>
		public WUDI.ECharts.Parallel.ParallelAxisDefault.AxisLabel axisLabel { get; set; } 

	}
}